package sicnu.cs.ich.api.domain.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;
import sicnu.cs.ich.api.common.annotations.sql.SQLDBName;
import sicnu.cs.ich.api.common.annotations.sql.SQLIgnore;
import sicnu.cs.ich.api.common.enums.OperEnum;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author CaiKe
 * @date 2021/11/13 17:53
 */
@Data
@Builder
@ToString
@AllArgsConstructor
@NoArgsConstructor
@SQLDBName("sys_operlog")
public class OperationLog implements Serializable {

    @SQLIgnore
    private Integer id;
    /**
     * 操作的模块
     */
    private String module;
    /**
     * 操作类型
     */
    private OperEnum type;
    /**
     * 操作描述
     */
    private String description;
    /**
     * 请求参数
     */
    private String reqParam;
    /**
     * 响应参数
     */
    private String respParam;
    /**
     * 操作用户的id
     */
    private Integer userId;
    /**
     * 操作的方法
     */
    private String method;
    /**
     * 访问的URI
     */
    private String uri;
    /**
     * 发起请求的IP地址
     */
    private String ip;
    /**
     * 请求创建时间
     */
    private Date createTime;

    public String toSQLStr() {
        StringBuilder sql = new StringBuilder();
        return sql
                .append("(null,")
                .append("'").append(module).append("',")
                .append("'").append(type).append("',")
                .append("'").append(description).append("',")
                .append("'").append(reqParam).append("',")
                .append("'").append(respParam).append("',")
                .append(userId).append(",")
                .append("'").append(method).append("',")
                .append("'").append(uri).append("',")
                .append("'").append(ip).append("',")
                .append("'").append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(createTime)).append("')").toString();
    }

}